#ifndef __M_LEVEL_H__
#define __M_LEVEL_H__

namespace maglog {

// 日志级别类，用于定义和管理不同的日志级别
class LogLevel {
    public:
        // 日志级别的枚举值
        enum class value {
            UNKNOW = 0, // 未知级别
            DEBUG,      // 调试级别
            INFO,       // 信息级别
            WARN,       // 警告级别
            ERROR,      // 错误级别
            FATAL,      // 致命错误级别
            OFF         // 关闭日志输出
        };

        // 将日志级别枚举值转换为对应的字符串表示
        static const char *toString(LogLevel::value l) {
            switch(l) {
                #define TOSTRING(name) #name
                case LogLevel::value::DEBUG: return TOSTRING(DEBUG);
                case LogLevel::value::INFO: return TOSTRING(INFO);
                case LogLevel::value::WARN: return TOSTRING(WARN);
                case LogLevel::value::ERROR: return TOSTRING(ERROR);
                case LogLevel::value::FATAL: return TOSTRING(FATAL);
                case LogLevel::value::OFF: return TOSTRING(OFF);
                #undef TOSTRING
                default: return "UNKNOW";
            }
            return "UNKNOW";
        }
};

} // namespace maglog

#endif // __M_LEVEL_H__
